package ar.edu.utn.frba.disenio.arena;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.ColumnLayout;
import org.uqbar.arena.layout.VerticalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.Window;
import org.uqbar.arena.windows.WindowOwner;

import ar.edu.utn.frba.disenio.Asiento;
import ar.edu.utn.frba.disenio.arena.controllers.BuscadorOperacion;
import ar.edu.utn.frba.disenio.arena.transformers.FechaTransformer;
import ar.edu.utn.frba.disenio.arena.transformers.PrecioTransformer;

@SuppressWarnings("serial")
public class ObtenerOperacionesWindow extends Window<BuscadorOperacion>
{

	private Window<?> parent;

	
	public ObtenerOperacionesWindow(WindowOwner parent, BuscadorOperacion model) {
		super(parent, model);
		this.setTitle("Aterrizar.com");
		this.getModelObject().buscarOperaciones();
		this.parent = (Window<?>) parent;
	}

	@Override
	public void createContents(Panel mainPanel) {
		
		Panel panelBusqueda = new Panel(mainPanel);
		panelBusqueda.setLayout(new VerticalLayout());
		
		new Label(panelBusqueda)
		.setFontSize(11)
		.bindValueToProperty("textoVentana");
		
		this.createResultsGrid(mainPanel);	
		
		Panel actionPanel = new Panel(mainPanel);
		actionPanel.setLayout(new ColumnLayout(2));
		
		Button botonCerrar = new Button(actionPanel);
		botonCerrar.setCaption("Cerrar");
		botonCerrar.onClick(new MessageSend(this, "cerrarVentana"));
	}
	

	private void createResultsGrid(Panel mainPanel) {
		Table<Asiento> table = new Table<Asiento>(mainPanel, Asiento.class);
		table.setHeigth(200);
		table.setWidth(484);

		table.bindItemsToProperty("resultados");

		this.describeResultsGrid(table);
	}

	private void describeResultsGrid(Table<Asiento> table) {
		
		new Column<Asiento>(table) //
		.setTitle("Salida")
		.setFixedSize(100)
		.bindContentsToTransformer(new FechaTransformer());
		
		new Column<Asiento>(table) //
		.setTitle("Aerolinea")
		.setFixedSize(100)
		.bindContentsToProperty("aerolinea");
		
		new Column<Asiento>(table) //
		.setTitle("Vuelo")
		.setFixedSize(100)
		.bindContentsToProperty("codigoVuelo");
		
		new Column<Asiento>(table) //
		.setTitle("Asiento")
		.setFixedSize(100)
		.bindContentsToProperty("numeroAsiento");
		
		new Column<Asiento>(table) //
		.setTitle("Precio")
		.setFixedSize(100)
		.bindContentsToTransformer(new PrecioTransformer());
	}

	public void cerrarVentana()
	{
		this.close();
		this.parent.open();
	}
}
